CopyCRS Subroutine

private subroutine CopyCRS(CRSout, CRSin)

copy the content of a CRS variable in another CRS variable

Arguments

Type IntentOptional Attributes Name
type(CRS), intent(out) :: CRSout
type(CRS), intent(in) :: CRSin

Variables

Type Visibility Attributes Name Initial
integer, public :: i

Source Code

SUBROUTINE CopyCRS &
!
(CRSout, CRSin)


IMPLICIT NONE

!Arguments with intent(in):
TYPE (CRS), INTENT (IN) :: CRSin

!Arguments with intent(out)
TYPE (CRS), INTENT (OUT) :: CRSout

!Local variables:
INTEGER :: i
!------------end of declaration------------------------------------------------

CRSout % system = CRSin % system
CRSout % name = CRSin % name
CRSout % ellipsoid = CRSin % ellipsoid
CRSout % datum = CRSin % datum
CRSout % basic = CRSin % basic
!erase eventual previous data if present 
IF (ALLOCATED (CRSout % param)) THEN
  DEALLOCATE ( CRSout % param )
END IF
IF (ALLOCATED (CRSout % description)) THEN
  DEALLOCATE ( CRSout % description )
END IF 

!Allocate space to complete copy
ALLOCATE ( CRSout % param (SIZE(CRSin % param)) )
ALLOCATE ( CRSout % description (SIZE(CRSin % description)) )

!copy parameters and descriptions
DO i = 1, SIZE(CRSin % param)
  CRSout % param(i) = CRSin % param(i)
  CRSout % description(i) = CRSin % description(i)
END DO

END SUBROUTINE CopyCRS